package com.fy.fyai.service.downloaddecorator.rate;

import java.io.IOException;
import java.io.InputStream;

/**
 * @author fwq
 * @description 限流器接口（策略模式）
 * @date 2025-11-03 21:00
 */
public interface RateLimiter {
    
    /**
     * 对输入流进行限流处理，返回限流后的输入流
     * 
     * @param inputStream 原始输入流
     * @param bytesPerSecond 每秒允许传输的字节数（-1表示不限流）
     * @return 限流后的输入流
     * @throws IOException IO异常
     */
    InputStream limit(InputStream inputStream, long bytesPerSecond) throws IOException;
    
    /**
     * 检查是否需要限流
     * 
     * @param bytesPerSecond 每秒允许传输的字节数
     * @return true表示需要限流，false表示不限流
     */
    default boolean needLimit(long bytesPerSecond) {
        return bytesPerSecond > 0;
    }
}
